<!DOCTYPE html>
            
<HTML>
<HEAD>
<meta name="booktitle" content="Developing Applications With Objective Caml" >
 <meta charset="ISO-8859-1"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
<META name="GENERATOR" content="hevea 1.05-7 of 2000-02-24">
<META NAME="Author" CONTENT="Christian.Queinnec@lip6.fr">
<LINK rel=stylesheet type="text/css" href="videoc-ocda.css">
<script language="JavaScript" src="videoc.js"><!--
//--></script>
<TITLE>
 Introduction
</TITLE>
</HEAD>
<BODY class="regularBody">
<A HREF="book-ora206.html"><IMG SRC ="previous_motif.gif" ALT="Previous"></A>
<A HREF="index.html"><IMG SRC ="contents_motif.gif" ALT="Contents"></A>
<A HREF="book-ora208.html"><IMG SRC ="next_motif.gif" ALT="Next"></A>
<HR>

<H2> Introduction</H2>Objective CAML's type system would be much simpler if the language were purely
functionnal. Alas, language extensions entail extensions to the type language,
and to the inference mechanism, of which we saw the illustration with the weak
type variables (see page <A HREF="book-ora026.html#pi-weak-type-var">??</A>), made unavoidable by
imperative extensions.<BR>
<BR>
Object typing introduces the notion of cyclic type, associated with the
keyword <B>as</B> (see page <A HREF="book-ora143.html#poo-as">??</A>), which can be used independently
of any concept of object oriented programming. The present appendix describes
this extension of the type language, available through an option of the compiler.<BR>
<BR>
<HR>
<A HREF="book-ora206.html"><IMG SRC ="previous_motif.gif" ALT="Previous"></A>
<A HREF="index.html"><IMG SRC ="contents_motif.gif" ALT="Contents"></A>
<A HREF="book-ora208.html"><IMG SRC ="next_motif.gif" ALT="Next"></A>
</BODY>
</HTML>
